package com.hbnu.system.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.hbnu.system.config.PostDeserializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 
 * </p>
 *
 * @author ${author}
 * @since 2023-05-16
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("tranproject_registration")
public class Tranproject_registration implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty(value = "主键")
    @TableId(value = "TRegistrationID", type = IdType.ASSIGN_ID)
    private String TRegistrationID;


    /**
     * 承担单位
     */
    @ApiModelProperty(value = "承担单位")
    @TableField("unit")
    private String unit;

    /**
     * 负责人工号
     */
    @ApiModelProperty(value = "负责人工号")
    @TableField(exist = false) // 表示该字段不为数据库字段
    private String account;

    /**
     * 项目编号
     */
    @ApiModelProperty(value = "合同编号")
    @TableField("projectId")
    private String projectId;

    /**
     * 项目类别
     */
    @ApiModelProperty(value = "项目类别")
    @TableField("projectCate")
    private String projectCate;

    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称")
    @TableField("projectName")
    private String projectName;

    /**
     * 项目来源单位
     */
    @ApiModelProperty(value = "项目来源单位/企业名称")
    @TableField("projectUnit")
    private String projectUnit;

    /**
     * 立项日期
     */
    @ApiModelProperty(value = "立项日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("approvalTime")
    private LocalDate approvalTime;

    /**
     * 立项年度
     */
    @ApiModelProperty(value = "立项年度")
    @TableField("approvalYear")
    private String approvalYear;

    /**
     * 项目开始日期
     */
    @ApiModelProperty(value = "项目开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("startTime")
    private LocalDate startTime;

    /**
     * 项目结束日期
     */
    @ApiModelProperty(value = "项目结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("endTime")
    private LocalDate endTime;

    /**
     * 合同经费（万元
     */
    @ApiModelProperty(value = "合同经费（万元")
    @TableField("contractFunds")
    private String contractFunds;

    /**
     * 到校经费（万元
     */
    @ApiModelProperty(value = "到校经费（万元")
    @TableField("arrivingFunds")
    private String arrivingFunds;

    /**
     * 财务项目号
     */
    @ApiModelProperty(value = "财务编号")
    @TableField("financialNum")
    private String financialNum;

    /**
     * 项目负责人
     */
    @ApiModelProperty(value = "项目负责人")
    @TableField("head")
    private String head;

    /**
     * 姓名
     */
    @ApiModelProperty(value = "负责人姓名")
    @TableField("headName")
    private String headName;

    /**
     * 出生年月
     */
    @ApiModelProperty(value = "出生年月")
    @TableField("birthdate") //fill = FieldFill.INSERT 自动填入
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthdate;

    /**
     * 职称
     */
    @ApiModelProperty(value = "职称")
    @TableField("title")
    private String title;

    /**
     * 档案编号
     */
    @ApiModelProperty(value = "档案编号")
    @TableField("archiveNum")
    private String archiveNum;

    /**
     * 项目状态
     */
    @ApiModelProperty(value = "项目状态")
    @TableField("projectState")
    private String projectState;

    /**
     * 预期成果（结题要求
     */
    @ApiModelProperty(value = "预期成果（结题要求")
    @TableField("expect")
    private String expect;

    /**
     * 立项材料
     */
    @ApiModelProperty(value="立项材料")
    @TableField("approvalMaterial")
    @JsonDeserialize(using = PostDeserializer.class)
    private byte[] approvalMaterial;

    /**
     * 协作内容和要求
     */
    @ApiModelProperty(value = "协作内容和要求")
    @TableField("contentRequirements")
    private String contentRequirements;

    /**
     * 预期目标和考核目标
     */
    @ApiModelProperty(value = "预期目标和考核目标")
    @TableField("goal")
    private String goal;

    /**
     * 工作进度计划
     */
    @ApiModelProperty(value = "工作进度计划")
    @TableField("jobPlan")
    private String jobPlan;

    /**
     * 知识产权归属及分享
     */
    @ApiModelProperty(value = "知识产权归属及分享")
    @TableField("intellectual")
    private String intellectual;

    /**
     * 付款计划
     */
    @ApiModelProperty(value = "付款计划")
    @TableField("payPlan")
    private String payPlan;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @TableField("notes")
    private String notes;

    /**
     * 录入人
     */
    @ApiModelProperty(value = "录入人")
    @TableField("entered")
    private String entered;

    /**
     * 录入日期
     */
    @ApiModelProperty(value = "录入日期")
    @TableField("enteredDate") //fill = FieldFill.INSERT 自动填入
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime enteredDate;


    /**
     * 未通过原因
     */
    @ApiModelProperty(value="未通过原因")
    @TableField(value = "reason")
    private String reason;

    /**
     * 项目成员
     */
    @ApiModelProperty(value="项目成员")
    @TableField(value = "projectMembers")
    private String projectMembers;

    /**
     * 量化分数
     */
    @ApiModelProperty(value="量化分数")
    @TableField(value = "score")
    private float score;
    /**
     * 项目类型
     */
    @ApiModelProperty(value="项目类型")
    @TableField(value = "projectType")
    private String projectType;

    /**
     * 学历
     */
    @ApiModelProperty(value="学历")
    @TableField(value = "education")
    private String education;

    /**
     * 合同类型
     */
    @ApiModelProperty(value="合同类型")
    @TableField(value = "contract_type")
    private String contractType;

    /**
     * 承担二级单位
     */
    @ApiModelProperty(value="承担二级单位")
    @TableField(value = "second_unit")
    private String secondUnit;

    /**
     * 来源单位类型
     */
    @ApiModelProperty(value="来源单位类型")
    @TableField(value = "source_unit_type")
    private String sourceUnitType;

    /**
     * 来源企业/公司分类
     */
    @ApiModelProperty(value="来源企业/公司分类")
    @TableField(value = "source_enterprise_category")
    private String sourceEnterpriseCategory;

    /**
     * 来源单位/企业所在省、市
     */
     @ApiModelProperty(value="来源单位/企业所在省、市")
    @TableField(value = "project_source_unit")
    private String projectSourceUnit;

    /**
     * 来源单位/企业所在省、市关联表id
     */
     @ApiModelProperty(value="来源单位/企业所在省、市关联表id")
     @TableField(value = "project_source_unit_id")
     private String projectSourceUnitId;

    /**
     * 成果应用行业领域——服务的国民经济行业
     */
    @ApiModelProperty(value="成果应用行业领域——服务的国民经济行业")
    @TableField(value = "national_economy")
    private String nationalEconomy;

    /**
     * 成果应用行业领域——服务的国民经济行业关联表id
     */
    @ApiModelProperty(value="成果应用行业领域——服务的国民经济行业关联表id")
    @TableField(value = "national_economy_id")
    private String nationalEconomyId;

    /**
     * 项目区分标志位：区分横向，纵向，产学合作协同育人
     */
    @ApiModelProperty(value = "项目类别：区分1：纵向，2：横向，3：产学合作协同育人")
    @TableField(value = "project_flag")
    private Integer projectFlag;

    /**
     * 学科分类
     */
    @ApiModelProperty(value="学科分类")
    @TableField(value = "disciplineClassfi")
    private String disciplineClassfi;

    /**
     * 活动类型
     */
    @ApiModelProperty(value="活动类型")
    @TableField(value = "activityType")
    private String activityType;

    /**
     * 项目来源
     */
    @ApiModelProperty(value="项目来源")
    @TableField(value = "projectSourse")
    private String projectSourse;

    /**
     * 组织形式
     */
    @ApiModelProperty(value="组织形式")
    @TableField(value = "organizationForm")
    private String organizationForm;

    /**
     * 合作形式
     */
    @ApiModelProperty(value="合作形式")
    @TableField(value = "cooperaForm")
    private String cooperaForm;

    /**
     * 项目的社会经济目标
     */
    @ApiModelProperty(value="项目的社会经济目标")
    @TableField(value = "socialEconomy")
    private String socialEconomy;

    /**
     * 项目参与人
     */
    @ApiModelProperty(value="项目参与人")
    @TableField(value = "project_participants")
    private String projectParticipants;

}
